package com.yantong.mapper;

import com.yantong.pojo.ChooseProductRes;
import com.yantong.pojo.Product;
import com.yantong.pojo.ProductCentre;
import com.yantong.pojo.ProductCentreAttribute;
import com.yantong.pojo.vo.ProductCentreCostVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface ProductCentreMapper {

    List<String> selectCentreIdsByProductId(String id);
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_product_centre
     *
     * @mbg.generated Wed Sep 12 19:49:41 CST 2018
     */
    int deleteByPrimaryKey(Long id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_product_centre
     *
     * @mbg.generated Wed Sep 12 19:49:41 CST 2018
     */
    ProductCentre selectByPrimaryKey(Long id);



    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_product_centre
     *
     * @mbg.generated Wed Sep 12 19:49:41 CST 2018
     */
    int updateByPrimaryKeySelective(ProductCentre record);




    /**
     * 获取商户商品详情
     * @param pcId
     * @return
     */
    ProductCentre getByKey(Long pcId);
    
    /**
     * 符合条件的商品数量
     * @param map
     * @return
     * @author baolingyu
     * @date 2018年9月21日-下午2:56:03
     */
    int countByWhere(HashMap<String, Object> map);
    
    /**
     * 
     * 商户商品列表,不分页 
     * @param searchMap
     * @return
     */
    List<ProductCentre> getListByWhere(HashMap<String, Object> searchMap);
    List<ProductCentre> getListByWhere(HashMap<String, Object> searchMap, RowBounds rowBounds);

    /**
     * base表商品删除时，获得centre表需要删除的id集合
     * @param productId：t_product_base表主键id
     * @return：t_product_centre表主键id集合
     * @author baolingyu
     * @date 2018年9月30日-下午2:44:23
     */
    List<Long> getRemoveProductId(Long productId);


    /**
     * 批量删除商品
     * @return
     * @author baolingyu
     * @date 2018年9月30日-下午2:15:53
     */
    int batchRemove(List<Long> ids);


    /***
     * 得到最大Id
     * @return
     */
    Long getId();


    /**
     * 按时间和商品Id得到商品
     * @param Id
     * @return
     */
    ProductCentre getProductByIdAndTime(Long Id);


    /**
     * 得到生活专区分类下的平台商品
     * @return
     */
    List<ProductCentre> getProductCentreBycate();

    /**
     * 根据productId更新商户商品信息
     * @param productId
     * @return
     */
    int updateProductCentre(ProductCentre productCentre);

    /**
     * 根据productId remove商户商品
     * @param productId
     * @return
     * @author baolingyu
     * @date 2018年10月18日-下午1:01:43
     */
    int removeByProductId(Long productId);


    /**
     * 商户商品统计
     * @param map
     * @return
     */
    int countCentre(HashMap<String, Object> map);


    /**
     * app商品列表
     * @param map
     * @param rowBounds
     * @return
     */
    List<ProductCentre> listCentre(HashMap<String, Object> map, RowBounds rowBounds);

    /**
     * app商品列表 前端用
     * @param map
     * @param rowBounds
     * @return
     */
    List<ProductCentre> getListCentreProducts(HashMap<String, Object> map, RowBounds rowBounds);

    List<ProductCentre> getListCentreProducts(Map map);

    int refundStock(@Param("nums") int total, @Param("pid") Long pid, @Param("version") Integer version);


    /**
     * 跟新商品排序
     * @param product
     * @return
     */
    int updateSore(Product product);


    /**
     * 通过包含主键的Map更新商户商品信息
     * @param updMap
     * @return
     */
    int changeCentreProductByIdMap(Map<Object, Object> updMap);

    /**
     * 得到商品利润表
     */
    List<ProductCentreCostVo> getProductCentreCostVoData(Map<String, Object> map);


    /**
     * 得到平台总成本
     * @param map
     * @return
     */
    String getPlacostprice(Map<String, Object> map);


    /**
     * 得到平台销售总额
     * @param map
     * @return
     */
    String getPlapricetotal(Map<String, Object> map);


    /**
     * 得到contre商品的所有订单
     * @param map
     * @return
     */
    ProductCentreCostVo getProductCentreById(Map<String, Object> map);

    /**
     * 商户商品统计
     * @param map
     * @return
     */
    int countShopkeeper(HashMap<String, Object> map);


    List<ProductCentre> getListShopkeeperProducts(HashMap<String, Object> map, RowBounds rowBounds);

    /**
     * 得到商品利润表
     */
    List<ProductCentreCostVo> getProductCentreCostVo(Map<String, Object> map,RowBounds rowBounds);

    /**
     * 总页数
     */
    List<ProductCentreCostVo> gettotal(Map<String, Object> map);

    /**
     * 符合条件的商品数量
     * @param map
     * @return
     * @authorxiangyi
     * @date 2018年9月21日-下午2:56:03
     */
    int countByCentreId(HashMap<String, Object> map);


    /**
     *
     * 商户商品列表,不分页
     * @param searchMap
     * @return
     */
    List<ProductCentre> getListByCentreId(HashMap<String, Object> searchMap);


    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_product_centre
     *
     * @mbg.generated Wed Sep 12 19:49:41 CST 2018
     */
    int insertSelective(ProductCentre record);

    int insertProductCentreAttribute(ProductCentreAttribute productCentreAttribute);
    int deleteProductCentreAttribute(Long pcId);
    int updateProductCentreAttribute(ProductCentreAttribute productCentreAttribute);
    ProductCentreAttribute getProductCentreAttributeByPcId(Long pcId);

    /**
     * 商户商品列表
     * @param map
     * @param rowBounds
     * @return
     * @author baolingyu
     * @date 2018年9月29日-上午10:55:47
     */
    List<ProductCentre> getCentreProducts(HashMap<String, Object> map, RowBounds rowBounds);


    /**
     * 批量审核
     * @return
     * @author baolingyu
     * @date 2018年11月19日-下午3:26:15
     */
    int batchAudit(List<Long> ids);

    /**
     * 更新库存
     * @param total
     * @param pid
     * @param version
     * @return
     */
    int changeStock(@Param("nums") int total, @Param("pid") Long pid, @Param("version") Integer version);

    /**
     * 得到商品
     * @param id
     * @return
     */
    ProductCentre getProductCentre(Long id);


    int batchUpdateSales(@Param("ids")List<Long> ids,@Param("sales") int sales);
    /**
     * 批量修改商户商品表
     * @param ids
     * @param sales
     * @return
     */
    int batchUpdateCentreSales(@Param("ids")List<Long> ids,@Param("sales") int sales);


    /**
     * 商户商品列表
     * @param map
     * @param rowBounds
     * @return
     * @author baolingyu
     * @date 2018年9月29日-上午10:55:47
     */
    List<ProductCentre> getExportProductCentre(HashMap<String, Object> map);

    List<ProductCentre> getListByCentreId(HashMap<String, Object> searchMap,RowBounds rowBounds);



    /**
     * 选择商品查询
     * @param map
     * @param rowBounds
     * @return
     */
    List<ChooseProductRes> chooseProductList(Map<String,Object> map, RowBounds rowBounds);
    long chooseProductCount(Map<String,Object> map);
}